home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 420_01 / pic.h < prev    next >
C/C++ Source or Header  |  1994-02-21  |  1KB  |  66 lines

  1. /*
  2. //    Pic.cc -- pic$@%U%)!<%^%C%H2hA|$r07$&(J
  3. //
  4. //        created    in 3/1/1993
  5. //        revised    in 2/13/1994
  6. */
  7.  
  8. #ifndef    _PIC_H_
  9. #define    _PIC_H_
  10.  
  11. #include    "defs.h"
  12.  
  13. #define    PicBitWrite(Size,Value)    {\
  14.     int     ii, Rest, Cache;\
  15.     Rest = Size;\
  16.     Cache = Value;\
  17.     Cache <<= 32 - Rest;\
  18.     while ( Rest > BitLength ) {\
  19.     for ( ii = 0; ii < BitLength; ii++ ) {\
  20.         *BitBufferPointer = *BitBufferPointer + *BitBufferPointer + (Cache < 0);\
  21.         Cache = Cache + Cache;\
  22.         Rest--;\
  23.     }\
  24.     PicWriteBufferNext();\
  25.     }\
  26.     for ( ii = 0; ii < Rest; ii++ ) {\
  27.     *BitBufferPointer = *BitBufferPointer + *BitBufferPointer + (Cache < 0);\
  28.     Cache = Cache + Cache;\
  29.     BitLength--; } }
  30.  
  31. #define    PicBitLoad(Size)    {\
  32.     int     ii, Rest;\
  33.     PicWord = 0;\
  34.     Rest = Size;\
  35.     while ( Rest > BitLength ) {\
  36.     for ( ii = 0; ii < BitLength; ii++ ) {\
  37.         PicWord <<= 1;\
  38.         if ( *BitBufferPointer & 0x80 )\
  39.         PicWord++;\
  40.         *BitBufferPointer <<= 1;\
  41.         Rest--;\
  42.     }\
  43.     PicBufferNext();\
  44.     }\
  45.     for ( ii = 0; ii < Rest; ii++ ) {\
  46.     PicWord <<= 1;\
  47.     if ( *BitBufferPointer & 0x80 )\
  48.         PicWord++;\
  49.     *BitBufferPointer <<= 1;\
  50.     BitLength--; } }
  51.  
  52. extern void    PicLoad();
  53. extern void    PicSave();
  54. extern void    PicBufferNext();
  55. extern void    PicBufferWriteFlush();
  56. extern void    PicWriteBufferNext();
  57. extern void    PicMarkClear();
  58.  
  59. extern unsigned char    *BitBufferPointer;
  60. extern int     NoExpand;
  61. extern uint32     PicWord;
  62. extern unsigned char    *Mark;
  63. extern int32    PicRadix;
  64.  
  65. #endif /* _PIC_H_ */
  66.